// 中间件本质是一个回调函数
// 中间件作用：使用函数封装公共组件，简化代码

// 分为全局中间件和路由中间件

// 全局中间件
// app.use(function (request, response, next) {
//   console.log('全局中间件')
//   next()
// })

const fs = require('fs')
const path = require('path')
function myMiddleware (request, response, next) {
  console.log('全局中间件')
  let {url, ip} = request
  fs.appendFileSync(path.resolve(__dirname + '/access.log'), `${url} ${ip} \n`)
  // next作用是执行下一个中间件或路由处理函数 如果没有next，则不会执行路由
  next()
}

const express = require('express')
const app = express()

// 使用中间件
app.use(myMiddleware)

app.get('/home', (request, response) => {
  response.status(200).set('xxx', 'yyy').send('前台首页')
})

// 其它响应
app.get('/other', (request, response) => {
  response.send('后台页面')
})

app.all('*', (request, response) => {
  response.send('404 Not Found')
})


// 监听端口，启动服务
app.listen(3000, () => {
  console.log('服务已经启动，3000端口监听中...')
})